package br.com.webservicedelivery.bean;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.webservicedelivery.dao.ProdutoDAO;
import br.com.webservicedelivery.dao.ServicosDAO;
import br.com.webservicedelivery.domain.Produto;
import br.com.webservicedelivery.domain.Servicos;
import br.com.webservicedelivery.util.FacesUtil;

@ManagedBean
@ViewScoped
public class ProdutoBean {
	private Produto produtoCadastro;
	private List<Produto> listaProdutos;
	private List<Produto> listaProdutosFiltrados;
	
	private String acao;
	private Long id;

	private List<Servicos> listaServicos;
	
	public Produto getServicosCadastro() {
		
		return produtoCadastro;
	}


	public Produto getProdutoCadastro() {
		return produtoCadastro;
	}


	public void setProdutoCadastro(Produto produtoCadastro) {
		this.produtoCadastro = produtoCadastro;
	}


	public List<Produto> getListaProdutos() {
		return listaProdutos;
	}


	public void setListaProdutos(List<Produto> listaProdutos) {
		this.listaProdutos = listaProdutos;
	}


	public List<Produto> getListaProdutosFiltrados() {
		return listaProdutosFiltrados;
	}


	public void setListaProdutosFiltrados(List<Produto> listaProdutosFiltrados) {
		this.listaProdutosFiltrados = listaProdutosFiltrados;
	}
	
	

	public String getAcao() {
		return acao;
	}

	public void setAcao(String acao) {
		this.acao = acao;
	}
	

	public Long getCodigo() {
		return id;
	}

	public void setCodigo(Long codigo) {
		this.id = codigo;
	}
	

	public List<Servicos> getListaServicos() {
		return listaServicos;
	}


	public void setListaServicos(List<Servicos> listaServicos) {
		this.listaServicos = listaServicos;
	}


	public void novo() {

		produtoCadastro = new Produto();

	}

	public void salvar() {
		try {
			ProdutoDAO produtoDAO = new ProdutoDAO();
			produtoDAO.salvar(produtoCadastro);

			produtoCadastro = new Produto();

			FacesUtil.adicionarMsgInfo("Produto salvo com sucesso");
		} catch (RuntimeException ex) {
			FacesUtil.adicionarMsgErro("Erro ao tentar inserir um produto : "
					+ ex.getMessage());
		}

	}

	public void carregar() {
		try {
			ProdutoDAO produtoDAO = new ProdutoDAO();
			listaProdutos = produtoDAO.listar();
		} catch (RuntimeException ex) {
			FacesUtil.adicionarMsgErro("Erro ao tentar listar os produtos: "
					+ ex.getMessage());
		}
	}

	public void carregarCadastro() {
		try {
			if (id != null) {
				ProdutoDAO produtoDAO = new ProdutoDAO();
				produtoCadastro = produtoDAO.buscarPorId(id);
			}else{
				produtoCadastro = new Produto();
			}
			
			ServicosDAO servicosDAO = new ServicosDAO();
			listaServicos = servicosDAO.listar();
			
		} catch (RuntimeException ex) {
			FacesUtil
					.adicionarMsgErro("Erro ao tentar obter os dados do produto: "
							+ ex.getMessage());
		}
	}

	public void excluir() {
		try {
			ProdutoDAO produtoDAO = new ProdutoDAO();
			produtoDAO.excluir(produtoCadastro);

			FacesUtil.adicionarMsgInfo("Produto removido com sucesso");
		} catch (RuntimeException ex) {
			FacesUtil.adicionarMsgErro("Erro ao tentar remover o produto : "
					+ ex.getMessage());
		}

	}
	public void editar() {
		try {
			ProdutoDAO produtoDAO = new ProdutoDAO();
			produtoDAO.editar(produtoCadastro);

			FacesUtil.adicionarMsgInfo("Produto editado com sucesso");
		} catch (RuntimeException ex) {
			FacesUtil.adicionarMsgErro("Erro ao tentar editar um produto : "
					+ ex.getMessage());
		}

	}


}
